home *** CD-ROM | disk | FTP | other *** search
- function readdate(x,y:integer):xxxstr8;
- { reads a string from the terminal from screen at position xy }
- { the string will contain a Valid date in format 00/00/00 }
- Var
- hold : array [1..6] of char;
- location : integer;
- inchar : char;
-
- begin
- location := 1;
- textcolor(black);
- textbackground(lightgray);
- gotoxy(x,y);
- write(' / / ');
- gotoxy(x,y);
- while location<8 do
- begin
- read(kbd,inchar);
- case location of
- 1:
- begin
- gotoxy(x,y);
- if inchar in ['1','0',' '] then
- begin
- hold[1] := inchar;
- write(inchar);
- location := 2;
- gotoxy((x+1),y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 2:
- begin
- gotoxy((x+1),y);
- if inchar in ['1'..'9','0'] then
- if hold[1]='1' then
- if inchar in ['1','2','0'] then
- begin
- hold[2] := inchar;
- write(inchar);
- location := 3;
- end
- else
- begin
- write(chr(7));
- end
- else
- begin
- write(inchar);
- hold[2] := inchar;
- location := 3;
- end
- else
- if ((inchar = chr(8)) or (inchar = chr(7))) then
- begin
- gotoxy(x,y);
- write(' ');
- location := 1;
- hold[1] := ' ';
- gotoxy(x,y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 3:
- begin
- gotoxy((x+3),y);
- if inchar in ['1'..'3','0',' '] then
- begin
- hold[3] := inchar;
- write(inchar);
- location := 4;
- gotoxy((x+4),y);
- end
- else
- if ((inchar = chr(8)) or (inchar = chr(7))) then
- begin
- gotoxy((x+1),y);
- write(' ');
- location := 2;
- hold[2] := ' ';
- gotoxy((x+1),y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 4:
- begin
- gotoxy((x+4),y);
- if inchar in ['1'..'9','0'] then
- begin
- hold[4] := inchar;
- write(inchar);
- location := 5;
- gotoxy((x+6),y);
- end
- else
- if ((inchar = chr(8)) or (inchar = chr(7))) then
- begin
- gotoxy((x+3),y);
- write(' ');
- location := 3;
- hold[3] := ' ';
- gotoxy((x+3),y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 5:
- begin
- gotoxy((x+6),y);
- if inchar in ['1'..'9','0'] then
- begin
- hold[5] := inchar;
- write(inchar);
- location := 6;
- gotoxy((x+7),y);
- end
- else
- if ((inchar = chr(8)) or (inchar = chr(7))) then
- begin
- gotoxy((x+4),y);
- write(' ');
- location := 4;
- hold[4] := ' ';
- gotoxy((x+4),y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 6:
- begin
- gotoxy((x+7),y);
- if inchar in ['1'..'9','0'] then
- begin
- hold[6] := inchar;
- write(inchar);
- location := 7;
- end
- else
- if ((inchar = chr(8)) or (inchar = chr(7))) then
- begin
- gotoxy((x+6),y);
- write(' ');
- location := 5;
- hold[5] := ' ';
- gotoxy((x+6),y);
- end
- else
- begin
- write(chr(7));
- end;
- end;
- 7:
- begin
- if ((inchar=chr(11)) or (inchar=chr(13))) then
- location := 8
- else
- if ((inchar=chr(8)) or (inchar=chr(7))) then
- begin
- gotoxy((x+7),y);
- write(' ');
- location := 6;
- hold[6] := ' ';
- gotoxy((x+7),y);
- end;
- end;
- end;
- end;
- readdate := hold[1]+hold[2]+'/'+hold[3]+hold[4]+'/'+hold[5]+hold[6];
- textcolor(lightgray);
- textbackground(black);
- end;